<template>
  <maincontainer>
    <mycard>
      <n-form
          ref="formRef"
          :label-width="80"
          label-placement="left"
          :model="formValue"
      >
        <n-grid x-gap="12" :cols="4">
          <n-gi>
            <n-form-item label="姓名:" path="name">
              <n-input v-model:value="formValue.name" placeholder="输入姓名"/>
            </n-form-item>
          </n-gi>
          <n-gi>
            <n-form-item label="姓名:" path="name">
              <n-input v-model:value="formValue.name" placeholder="输入姓名"/>
            </n-form-item>
          </n-gi>
          <n-gi>
            <n-form-item label="姓名:" path="name">
              <n-input v-model:value="formValue.name" placeholder="输入姓名"/>
            </n-form-item>
          </n-gi>
          <n-gi>
            <n-button @click="handleSearch">查询</n-button>
            <n-button @click="handleResetForm">重置</n-button>
            <n-button @click="handleCreate">新建</n-button>
          </n-gi>
        </n-grid>
      </n-form>
    </mycard>
    <mycard class="flex-1 h-full">
      <flextable :column="column" :tabledata="tableData"></flextable>
    </mycard>
    <mycard class="w-full h-8 juzhong1">
      <fenye :total="total" @change="gettabledatafunc" ref="fenyeref"  class="juzhong1"></fenye>
    </mycard>
    <Edit ref="editref" @close='refreshdelete'/>
    <ChildList ref='childref'  @close='refreshdelete' />
  </maincontainer>
</template>

<script setup name="Dictmanager" lang="ts">
import {useRoute} from 'vue-router'
import Edit from "./modal.vue"
import ChildList from "./childlist.vue"
import { h, inject, ref } from 'vue'
import { useListIndex } from '../../../hooks/useEdit'
import {useColumns} from "../../../hooks/useColumns";
import { NButton } from 'naive-ui'

const childref=ref(null)
const route = useRoute()
const {
  formRef, fenyeref, editref, formValue, tableData, total, handleSearch,
  handleResetForm, handleView, handleCreate,refreshdelete,http,message,loading,
} = useListIndex()
// 点击编辑
const handleEdit=(data:any)=>{
  const shuju = {...data,parent:data.parent?.id || ""}
  editref.value!.init("edit", shuju)
}
// 点击字典项
const handleChild=(data:any)=>{
  childref.value!.init(data)
  console.log(data,"传递的参数是什么1")
}
// 点击删除
let delDialog: Function = inject("delDialog")
const handleDelete = (data: any) => {
  delDialog(refreshdelete,http.zidiandelete,data.id,data.name)
}
const {index, createdTime, changeTime,desc, view, edit, del} = useColumns(handleView,handleEdit,handleDelete)
const column = ref([
  index,
  {title: "名称", key: "name", show: true},
  {title: "所属上级", key: "parent", show: true,render: (rowData:any)=>{
    return rowData["parent"]?rowData["parent"].name:""
    }},desc,
  createdTime,changeTime,
  {
    title: "查看字典项", key: "children", width: 120, align: "center", show: true, render: (rowData: any,) => {
      return h(NButton, {
        onClick: () => {
          handleChild && handleChild(rowData)
        }, size: "small",type:"info",
      }, {
        default() {
          return "字典项"
        }
      })
    }
  },
  view, edit, del
])

// 向后台获取数据
const gettabledatafunc = () => {
  const config = {
    page:fenyeref.value.page,
    pageSize:fenyeref.value.pageSize,
    ...formValue.value,
  }
  http.zidianlist(config,loading).then((res:any)=>{
    if(res.data.code===0){
      tableData.value = res.data.items
      total.value = res.data.total
    }
  }).catch(err =>{
    message.error(err || "查询失败")
  })
}


const zhucefunc:Function|undefined = inject("zhuceshuaxinfunc")
// 初始化函数
const init = () => {
  fenyeref.value && fenyeref.value.changeoption({page:1})
}

// 初始化区域
init()
zhucefunc && zhucefunc({[route.name!.toString()]:init})
</script>


<style scoped>
</style>
